<?php
 Session_Start () ;
 If (!$_SESSION ["repertoire_config"]) { Header ("Location: ../../sortie.php?sortie=3") ; }
 Include ("../../include/garennes.cfg") ;
 Include ("../../include/init.php") ;
 Include ("../include/config.inc") ;
 verif_droits ($droit_courant, $_SESSION ["code"]) ;
 
 Include ("../../include/var_temp.inc") ;
 Include ("../../include/recup_notes_sauvegardes.php") ;
 
 $id_admin = utilparcode ($_SESSION ["code"]) ;
 
 @Set_Time_Limit (0) ;
 
 $table = var_courante ("table", 0, null) ;
 $verif = var_courante ("verif", 0, null) ;
 $id_restaure = var_courante ("id_restaure", 0, 0) ;
 $separateur = var_courante ("separateur", 0, ";") ;
 $transfere = var_courante ("transfere", 0, 0) ;
 $millesime = millesime (0) ;
 If (!IsSet ($separateur_repertoire)) { $separateur_repertoire = "/" ; }
 
 Function charge_csv ($source, $table, $separateur)
  {
   Global $id_sql, $fin_chaine ;
   $resultats = SQL_commande ("DELETE FROM ".$table, $id_sql) ;
   $source = Str_Replace ("\\", "\\\\", $source) ;
   If (PHP_OS == "Linux") { $resultats = SQL_commande ("LOAD DATA INFILE '".$source."' INTO TABLE ".$table." FIELDS TERMINATED BY '".$separateur."' ENCLOSED BY '\"' ESCAPED BY '\\\\' LINES TERMINATED BY '\\n'", $id_sql) ; }
   Else { $resultats = SQL_commande ("LOAD DATA INFILE '".$source."' INTO TABLE ".$table." FIELDS TERMINATED BY '".$separateur."' ENCLOSED BY '\"' ESCAPED BY '\\\\' LINES TERMINATED BY '\\n'", $id_sql) ; }
  }
 
 Function restaure ($num, $qui, $ou, $separateur)
  {
   Global $id_sql, $ext_texte, $separateur_repertoire, $repertoire_racine ;
   $taille = 0 ;
   For ($i = 0 ; $i < SizeOf ($qui) ; $i++)
    {
     If (($qui [$i] != "restaurations") And ($qui [$i] != "restaurations_fichiers") And
         ($qui [$i] != "sauvegardes") And ($qui [$i] != "sauvegardes_fichiers"))
      {
       If (File_Exists ($ou.$separateur_repertoire.$qui [$i].$ext_texte))
        {
	 //Copy ($ou.$separateur_repertoire.$qui [$i].$ext_texte, $repertoire_racine."tmp".$separateur_repertoire."gar.csv") ;
         //charge_csv ($repertoire_racine."tmp".$separateur_repertoire."gar.csv", $qui [$i], $separateur) ;
	 charge_csv ($ou.$separateur_repertoire.$qui [$i].$ext_texte, $qui [$i], $separateur) ;
         //@UnLink ($repertoire_racine."tmp".$separateur_repertoire."gar.csv") ;
         $taille += FileSize ($ou.$separateur_repertoire.$qui [$i].$ext_texte) ;
         $ok = SQL_commande ("INSERT INTO restaurations_fichiers (numero,nom,extension,taille) VALUES ('".$num."','".$qui [$i]."','".$ext_texte."', '".FileSize ($ou.$separateur_repertoire.$qui [$i].$ext_texte)."')", $id_sql) ;
	}
      }
    }
   $ok = SQL_commande ("UPDATE restaurations SET taille='".$taille."' WHERE id_restauration='".$num."' LIMIT 1", $id_sql) ;
   Return "1" ;
  }
 
 Function restaure_sql ($ou, $nom)
  {
   Global $id_sql, $separateur_repertoire, $repertoire_racine, $ext_sql ;
   $taille = 0 ;
   $contenu = File ($ou.$separateur_repertoire.$nom.$ext_sql) ;
   $chaine = "" ;
   For ($i = 0 ; $i < SizeOf ($contenu) ; $i++)
    {
     $contenu [$i] = Chop ($contenu [$i]) ;
     If (SubStr ($contenu [$i], 0, 1) != "#")
      {
       If (SubStr ($contenu [$i], StrLen ($contenu [$i])-1, 1) == ";")
        {
         $chaine .= $contenu [$i] ;
         $ok = SQL_commande ($chaine, $id_sql) ;
         $chaine = "" ;
        }
       Else
        {
         $chaine .= $contenu [$i] ;
        }
      }
    }
   //$ok = SQL_commande ("UPDATE restaurations SET taille='".$taille."' WHERE id_restauration='".$num."' LIMIT 1", $id_sql) ;
   Return "1" ;
  }
 
 Function restaure_1_table ($num, $qui, $ou, $fichier, $separateur)
  {
   Global $id_sql, $ext_texte, $separateur_repertoire, $repertoire_racine ;
   Copy ($ou.$separateur_repertoire.$fichier, $repertoire_racine."tmp".$separateur_repertoire."gar.csv") ;
   charge_csv ($repertoire_racine."tmp".$separateur_repertoire."gar.csv", $qui, $separateur) ;
   @Unlink ($repertoire_racine."tmp".$separateur_repertoire."gar.csv") ;
   $taille = FileSize ($ou.$separateur_repertoire.$fichier) ;
   $ok = SQL_commande ("INSERT INTO restaurations_fichiers (numero,nom,extension,taille) VALUES ('".$num."','".$qui."','".$ext_texte."','".FileSize ($ou.$separateur_repertoire.$fichier)."')", $id_sql) ;
   $ok = SQL_commande ("UPDATE restaurations SET taille='".$taille."' WHERE id_restauration='".$num."' LIMIT 1", $id_sql) ;
   Return "1" ;
  }
 
 If (IsSet ($table))
  {
   $d1 = Date ("Y-m-d") ;
   $d2 = Date ("H-i-s") ;
   $nom_rep = "r".$d1."_".$d2 ;
   @MkDir ($repertoire_restauration.$separateur_repertoire.$nom_rep, 0755) ;
   @UnLink ($repertoire_restauration.$separateur_repertoire."*".$ext_texte) ;
   If ($transfere)
    {
     $fichier = $_FILES ["fichier"]["tmp_name"] ;
     $fichier_name = $_FILES ["fichier"]["name"] ;
     Copy ($fichier, $repertoire_restauration.$separateur_repertoire.$nom_rep.$separateur_repertoire.$fichier_name) ;
     $nom = $fichier_name ;
     $t = 1 ;
     If (StrPos ($fichier_name, ".zip")) { $type = 1 ; $compresse = 1 ; }
     ElseIf (StrPos ($fichier_name, ".tar.gz")) { $type = 2 ; $compresse = 1 ; }
     ElseIf (StrPos ($fichier_name, ".tar")) { $type = 3 ; $compresse = 1 ; }
     ElseIf (StrPos ($fichier_name, $ext_texte)) { $type = 4 ; }
     Else { $type = 4 ; }
    }
   Else
    {
     $resultats = SQL_commande ("SELECT * FROM sauvegardes WHERE id_sauvegarde='".$id_restaure."' LIMIT 1", $id_sql) ;
     $ligne = SQL_tableau_associatif ($resultats, "") ;
     If ($ligne ["nom_fichier"] == "")
      {
       $res = SQL_commande ("SELECT nom FROM sauvegarde_fichiers WHERE numero='".$id_restaure."'", $id_sql) ;
       For ($i = 0 ; $i < $nbr_f ; $i++)
        {
         $r = SQL_ligne_suivante ($res, "") ;
         @Copy ($repertoire_sauvegarde.$separateur_repertoire.$ligne ["nom_repertoire"].$separateur_repertoire.$r [0], $repertoire_restauration.$separateur_repertoire.$nom_rep.$separateur_repertoire.$r [0]) ;
        }
      }
     Else
      {
       @Copy ($repertoire_sauvegarde.$separateur_repertoire.$ligne ["nom_repertoire"].$separateur_repertoire.$ligne ["nom_fichier"], $repertoire_restauration.$separateur_repertoire.$nom_rep.$separateur_repertoire.$ligne ["nom_fichier"]) ;
      }
     $compresse = $ligne ["compresse"] ;
     If ($compresse) { $type = 2 ; }
     $nom = $ligne ["nom_fichier"] ;
     $nom_rep_sauv = $ligne ["nom_repertoire"] ;
     $t = 0 ;
    }
   If (PHP_OS == "Linux")
    {
     If ($compresse)
      {
       Switch ($type)
        {
         Case 1 : Exec ("cd ".$repertoire_restauration."/".$nom_rep."; unzip ./".$nom) ;
                  Break ;
         Case 2 : Exec ("cd ".$repertoire_restauration."/".$nom_rep."; tar -zxf ./".$nom) ;
                  Exec ("cd ".$repertoire_restauration."/".$nom_rep."; rm --force ./".$nom) ;
                  Break ;
         Case 3 : Exec ("cd ".$repertoire_restauration."/".$nom_rep."; tar -xf ./".$nom) ;
                  Exec ("cd ".$repertoire_restauration."/".$nom_rep."; rm --force ./".$nom) ;
                  Break ;
        }
      }
    }
   $resultats = SQL_commande ("INSERT INTO restaurations (nom_repertoire,date,type,transmis,qui) VALUES ('".$nom_rep."','".$d1." ".$d2."','".$table."','".$t."','".utilparpasse ($identifiant, $passe)."')", $id_sql) ;
   $resultats = SQL_commande ("SELECT id_restauration FROM restaurations WHERE date='".$d1." ".$d2."' AND qui='".utilparpasse ($identifiant, $passe)."' LIMIT 1", $id_sql) ;
   $numero = SQL_ligne_suivante ($resultats) ;
   UnSet ($f) ;
   Switch ($table)
    {
     Case "Toutes"  : $resultats = SQL_commande ("SHOW TABLES", $id_sql) ;
                      For ($i = 0 ; $i < SQL_nbr_lignes ($resultats) ; $i++)
                       {
                        $ligne = SQL_ligne_suivante ($resultats) ;
			$f [$i] = $ligne [0] ;
                       }
		      $message = restaure ($numero [0], $f, $repertoire_restauration.$separateur_repertoire.$nom_rep, $separateur) ;
		      Break ;
     Case "Import"  : $carac = SQL_commande ("SELECT nom_repertoire,separateur FROM sauvegardes WHERE id_sauvegarde='".$id_restaure."' LIMIT 1", $id_sql) ;
                      If (SQL_nbr_lignes ($carac) == 1)
                       {
                        $c = SQL_ligne_suivante ($carac) ;
                        $nom_rep = $c [0] ;
                        $s = Explode ("^", $c [1]) ;
                        $resultats = SQL_commande ("SELECT nom,extension FROM sauvegardes_fichiers WHERE numero='".$id_restaure."' ORDER BY nom", $id_sql) ;
			$inc_csv = $inc_sql = 0 ;
                        For ($i = 0 ; $i < SQL_nbr_lignes ($resultats) ; $i++)
                         {
                          $ligne = SQL_ligne_suivante ($resultats) ;
		  	  $f [$i] = $ligne [0] ;
			  If ($ligne [1] == "csv") { $inc_csv++ ; } ElseIf ($ligne [1] == "sql") { $inc_sql++ ; }
                         }
			If ($inc_sql == 0) { $message = restaure ($numero [0], $f, $repertoire_sauvegarde.$separateur_repertoire.$nom_rep, $s [1]) ; }
			ElseIf ($inc_csv == 0) { $message = restaure_sql ($numero [0], $f, $repertoire_sauvegarde.$separateur_repertoire.$nom_rep, $s [1]) ; }
			Else { $message = "Erreur : Le r&eacute;pertoire contient &agrave; la fois des fichiers CSV et SQL !" ; }
                       }
		      Break ;
     Case "Profs"   : $f [0] = "utilisateurs" ; $f [1] = "services_prof" ; $f [2] = "appreciations" ;
                      $f [3] = "controles" ; $f [4] = "notes" ; $f [5] = "cahier_textes" ; $f [6] = "cahier_documents" ;
		      $f [7] = "cahier_type_documents" ; $f [8] = "calcul_moyenne" ; $f [9] = "memo_notes" ;
		      $message = restaure ($numero [0], $f, $repertoire_restauration.$separateur_repertoire.$nom_rep, $separateur) ;
		      Break ;
     Case "Eleves"  : $f [0] = "eleves" ; $f [1] = "services_classe" ; $f [2] = "options_eleve" ;
                      $message = restaure ($numero [0], $f, $repertoire_restauration.$separateur_repertoire.$nom_rep, $separateur) ;
		      Break ;
     Case "Gestion" : $f [0] = "utilisateurs" ; $f [1] = "classes" ; $f [2] = "disciplines" ;
                      $f [3] = "etablissements" ; $f [4] = "gestion" ; $f [5] = "menus" ;
		      $f [6] = "menus_droits" ; $f [7] = "niveaux" ; $f [8] = "periodes" ;
		      $f [9] = "sessions" ; $f [10] = "signatures" ; $f [11] = "themes" ;
		      $f [12] = "types_periode" ;
		      $message = restaure ($numero [0], $f, $repertoire_restauration.$separateur_repertoire.$nom_rep, $separateur) ;
		      Break ;
     Case "Toutes_SQL"  :
     Case "Profs_SQL"   :
     Case "Eleves_SQL"  :
     Case "Gestion_SQL" : $message = restaure_sql ($repertoire_restauration.$separateur_repertoire.$nom_rep,$nom_rep_sauv) ;
		          Break ;
     Default        : Exec ("cd ".$repertoire_restauration.$separateur_repertoire.$nom_rep."; ls *".$ext_texte." >.".$separateur_repertoire."liste") ;
                      $fiche = File ($repertoire_restauration.$separateur_repertoire.$nom_rep.$separateur_repertoire."liste") ;
		      $resultats = SQL_commande ("UPDATE restaurations SET nom_fichier='".Chop ($fiche [0])."' WHERE id_restauration='".$numero [0]."' LIMIT 1", $id_sql) ;
                      $message = restaure_1_table ($numero [0], $table, $repertoire_restauration.$separateur_repertoire.$nom_rep, Chop ($fiche [0]), $separateur) ;
		      Exec ("cd ".$repertoire_restauration.$separateur_repertoire.$nom_rep."; rm --force .".$separateur_repertoire."liste") ;
		      Break ;
    }
  }
 ElseIf (IsSet ($verif) And ($verif >= 1) And ($verif <= 2))
  {
   If ($verif == 1)
    {
     // Recuperation notes a partir d'une sauvegarde
     $id_classe = var_courante ("id_classe", 0, 0) ;
     $d1 = Date ("Y-m-d") ;
     $d2 = Date ("H-i-s") ;
     $nom_rep = "v".$d1."_".$d2 ;
     @MkDir ($repertoire_restauration.$separateur_repertoire.$nom_rep, 0755) ;
     @UnLink ($repertoire_restauration.$separateur_repertoire."*".$ext_texte) ;
     // Met les fichiers dans le repertoire temporaire
     @Copy ($_FILES ["fichier_notes"]["tmp_name"], $repertoire_restauration.$separateur_repertoire.$nom_rep.$separateur_repertoire.$_FILES ["fichier_notes"]["name"]) ;
     $message = recup_notes ($base_choisie, Array (''), $repertoire_restauration.$separateur_repertoire.$nom_rep.$separateur_repertoire.$_FILES ["fichier_notes"]["name"],
                             $separateur, $millesime, $id_sql, $id_classe) ;
    }
   ElseIf ($verif == 2)
    {
     // Recuperation eleves heberges a partir d'une sauvegarde
     $d1 = Date ("Y-m-d") ;
     $d2 = Date ("H-i-s") ;
     $nom_rep = "v".$d1."_".$d2 ;
     @MkDir ($repertoire_restauration.$separateur_repertoire.$nom_rep, 0755) ;
     @UnLink ($repertoire_restauration.$separateur_repertoire."*".$ext_texte) ;
     // Met les fichiers dans le repertoire temporaire
     @Copy ($_FILES ["fichier_notes"]["tmp_name"], $repertoire_restauration.$separateur_repertoire.$nom_rep.$separateur_repertoire.$_FILES ["fichier_notes"]["name"]) ;
     //Include ("../../include/module_absences.php") ;
     $message = recup_eleves_heberges ($base_choisie, $repertoire_restauration.$separateur_repertoire.$nom_rep.$separateur_repertoire.$_FILES ["fichier_notes"]["name"],
                                       $millesime, $id_sql) ;
    }
  }

 $resultats = SQL_commande ("SELECT * FROM menus WHERE numero='".$droit_courant."' AND ordre='0'", $id_sql) ;
 $l = SQL_tableau_associatif ($resultats, "") ;  
 Echo "<html><head>" ;
 entete_html ("Garennes - Restauration", "travail", 1) ;
 Echo styles ("none", "none", "none", $l ["couleur_fond"], "none") ;
 Echo "<script>" ;
 Echo " function verif1() {" ;
 Echo " if (document.forme1.separateur.value==\"\") {" ;
 Echo " alert (\"Il manque le SEPARATEUR\\npour les fichiers CSV !\");" ;
 Echo " document.forme1.separateur.focus();" ;
 Echo " document.forme1.separateur.select();" ;
 Echo " return false;}" ;
 Echo " else return true" ;
 Echo " }" ;
 Echo " function verif2(){" ;
 Echo " if (document.forme2.separateur.value==\"\") {" ;
 Echo " alert (\"Il manque le SEPARATEUR\\npour les fichiers CSV !\");" ;
 Echo " document.forme2.separateur.focus();" ;
 Echo " document.forme2.separateur.select();" ;
 Echo " return false;}" ;
 Echo " else return true" ;
 Echo " }" ;
 Echo "</script>" ;
 Echo "</head>" ;
 
 $resultats = SQL_commande ("SELECT * FROM menus WHERE numero='".$droit_courant."' AND ordre='0'", $id_sql) ;
 $l = SQL_tableau_associatif ($resultats, "") ;
 Echo "<BODY BACKGROUND=\"../images/fond.png\" TEXT=\"".$l ["couleur_texte"]."\" OnContextMenu=\"return false\">" ;
 Echo "<CENTER><FONT COLOR=\"#0000FF\">Restauration&nbsp;des&nbsp;donn&eacute;es&nbsp;</FONT>" ;
 
 If (IsSet ($message))
  {
   If ($message != "1") { Echo "<br><font color=\"#ff0000\"><blink>".$message."</blink></font>" ; }
   Else { Echo ":&nbsp;<FONT COLOR=\"#FF0000\"><BLINK>Effectu&eacute;e</BLINK></FONT>" ; }
  }
 Echo "<br>R&eacute;pertoire de restauration : <b>".$repertoire_restauration.$separateur_repertoire."</b><br>" ;
 Echo "</CENTER>" ;
 Echo "<TABLE BORDER=\"0\" ALIGN=\"CENTER\" style=\"border-collapse:collapse\"><TR><TD vALIGN=\"TOP\">" ;
 
 // Restauration d'une table
 Echo "<FORM ACTION=\"./restauration.php\" METHOD=\"POST\" NAME=\"forme1\" ENCTYPE=\"multipart/form-data\" onSubmit=\"return verif1()\">" ;
 Echo "<INPUT TYPE=\"HIDDEN\" NAME=\"transfere\" VALUE=\"1\">" ;
 Echo "<INPUT TYPE=\"HIDDEN\" NAME=\"type\" VALUE=\"1\">" ;
 Echo "<TABLE BORDER=\"1\" BORDERCOLOR=\"#000000\" ALIGN=\"CENTER\" BGCOLOR=\"".$l ["couleur_fond"]."\" CELLPADDING=\"0\" CELLSPACING=\"0\" style=\"border-collapse:collapse\">" ;
 Echo "<TR><TD COLSPAN=\"2\" BGCOLOR=\"".$l ["lien"]."\" ALIGN=\"CENTER\">&nbsp;<B>Restauration&nbsp;d'une&nbsp;table&nbsp;</B></TD></TR>" ;
 Echo "<TR><TD><TABLE BORDER=\"0\" BORDERCOLOR=\"#000000\" ALIGN=\"CENTER\" BGCOLOR=\"".$l ["couleur_fond"]."\" CELLPADDING=\"1\" CELLSPACING=\"1\" WIDTH=\"100%\" style=\"border-collapse:collapse\">" ;
 Echo "<TR><TD ALIGN=\"RIGHT\">&nbsp;Table&nbsp;&agrave;&nbsp;restaurer&nbsp;:&nbsp;</TD>" ;
 Echo "<TD ALIGN=\"LEFT\">" ;
 Echo "<SELECT NAME=\"table\">" ;
 $resultats = SQL_commande ("SHOW TABLES", $id_sql) ;
 For ($i = 0 ; $i < SQL_nbr_lignes ($resultats) ; $i++)
  {
   $ligne = SQL_ligne_suivante ($resultats) ;
   Echo "<OPTION NAME=\"".$ligne [0]."\">".$ligne [0]."</OPTION>" ;
  } 
 Echo "</SELECT></TD></TR>" ;
 Echo "<TR>" ;
 Echo "<TD ALIGN=\"RIGHT\">&nbsp;Donn&eacute;es&nbsp;(<FONT COLOR=\"#FF0000\">".$ext_texte."</FONT>)&nbsp;:&nbsp;</TD>" ;
 Echo "<TD ALIGN=\"LEFT\"><INPUT TYPE=\"FILE\" NAME=\"fichier\" SIZE=\"15\"></TD>" ;
 Echo "</TR>" ;
 Echo "<TR>" ;
 Echo "<TD ALIGN=\"RIGHT\">&nbsp;S&eacute;parateur&nbsp;CSV&nbsp;:&nbsp;</TD>" ;
 Echo "<TD ALIGN=\"LEFT\"><INPUT TYPE=\"TEXT\" NAME=\"separateur\" VALUE=\"".SubStr ($separateur, 0, 1)."\" SIZE=\"2\" MAXLENGTH=\"1\"></TD>" ;
 Echo "</TR>" ;
 If (PHP_OS == "Linux")
  {
   Echo "<TR>" ;
   Echo "<TD ALIGN=\"RIGHT\"><INPUT TYPE=\"CHECKBOX\" NAME=\"compresse\"></TD>" ;
   Echo "<TD ALIGN=\"LEFT\">Compress&eacute;&nbsp;(<FONT COLOR=\"#FF0000\">.tar.gz</FONT>)&nbsp;</TD>" ;
   Echo "</TR>" ;
  }
 Else { Echo "<INPUT TYPE=\"hidden\" NAME=\"compresse\" value=\"0\">" ; }
 Echo "<TR><TD ALIGN=\"CENTER\" COLSPAN=\"2\"><INPUT TYPE=IMAGE SRC=\"../images/valider.png\" BORDER=\"0\"></TD></TR></TABLE>" ;
 Echo "</TD></TR></TABLE>" ;
 Echo "</FORM>" ;
 
 // Restauration totale
 Echo "<BR>" ;
 Echo "<FORM ACTION=\"./restauration.php\" METHOD=\"POST\" NAME=\"forme2\" ENCTYPE=\"multipart/form-data\" onSubmit=\"return verif2()\">" ;
 Echo "<INPUT TYPE=\"HIDDEN\" NAME=\"transfere\" VALUE=\"1\">" ;
 Echo "<INPUT TYPE=\"HIDDEN\" NAME=\"type\" VALUE=\"2\">" ;
 Echo "<TABLE BORDER=\"1\" BORDERCOLOR=\"#000000\" ALIGN=\"CENTER\" BGCOLOR=\"".$l ["couleur_fond"]."\" CELLPADDING=\"0\" CELLSPACING=\"0\" style=\"border-collapse:collapse\">" ;
 Echo "<TR><TD COLSPAN=\"2\" BGCOLOR=\"".$l ["lien"]."\" ALIGN=\"CENTER\">&nbsp;<B>Restauration&nbsp;totale&nbsp;</B></TD></TR>" ;
 Echo "<TR><TD><TABLE BORDER=\"0\" BORDERCOLOR=\"#000000\" ALIGN=\"CENTER\" BGCOLOR=\"".$l ["couleur_fond"]."\" CELLPADDING=\"1\" CELLSPACING=\"1\" WIDTH=\"100%\" style=\"border-collapse:collapse\">" ;
 Echo "<TR>" ;
 Echo "<TD ALIGN=\"RIGHT\">&nbsp;Type&nbsp;de&nbsp;restauration&nbsp;:&nbsp;</TD>" ;
 Echo "<TD ALIGN=\"LEFT\">" ;
 Echo "<SELECT NAME=\"table\">" ;
 Echo "<OPTION VALUE=\"Toutes\">Toutes les tables</OPTION>" ;
 Echo "<OPTION VALUE=\"Profs\">Base des professeurs</OPTION>" ;
 Echo "<OPTION VALUE=\"Eleves\">Base des &eacute;l&egrave;ves</OPTION>" ;
 Echo "<OPTION VALUE=\"Gestion\">Gestion g&eacute;n&eacute;rale</OPTION>" ;
 Echo "</SELECT>" ;
 Echo "</TD></TR>" ;
 Echo "<TR>" ;
 Echo "<TD ALIGN=\"RIGHT\">&nbsp;Archive&nbsp;(<FONT COLOR=\"#FF0000\">.tar</FONT>)&nbsp;:&nbsp;</TD>" ;
 Echo "<TD ALIGN=\"LEFT\"><INPUT TYPE=\"FILE\" NAME=\"fichier\" SIZE=\"15\"></TD>" ;
 Echo "</TR>" ;
 Echo "<TR>" ;
 Echo "<TD ALIGN=\"RIGHT\">&nbsp;S&eacute;parateur&nbsp;CSV&nbsp;:&nbsp;</TD>" ;
 Echo "<TD ALIGN=\"LEFT\"><INPUT TYPE=\"TEXT\" NAME=\"separateur\" VALUE=\"".SubStr ($separateur, 0, 1)."\" SIZE=2 MAXLENGTH=1></TD>" ;
 Echo "</TR>" ;
 If (PHP_OS == "Linux")
  {
   Echo "<TR>" ;
   Echo "<TD ALIGN=\"RIGHT\"><INPUT TYPE=\"CHECKBOX\" NAME=\"compresse\"></TD>" ;
   Echo "<TD ALIGN=\"LEFT\">Compress&eacute;&nbsp;(<FONT COLOR=\"#FF0000\">.tar.gz</FONT>)&nbsp;</TD>" ;
   Echo "</TR>" ;
  }
 Else { Echo "<INPUT TYPE=\"hidden\" NAME=\"compresse\" value=\"0\">" ; }
 Echo "<TR>" ;
 Echo "<TD ALIGN=\"CENTER\" COLSPAN=\"2\"><INPUT TYPE=\"IMAGE\" SRC=\"../images/valider.png\" BORDER=\"0\"></TD>" ;
 Echo "</TR></TABLE></TD></TR></TABLE>" ;
 Echo "</FORM>" ;
 
 // Verification des notes a partir d'un sauvegarde
 Echo "<BR>" ;
 Echo "<FORM ACTION=\"./restauration.php\" METHOD=\"POST\" NAME=\"forme2\" ENCTYPE=\"multipart/form-data\" onSubmit=\"return verif2()\">" ;
 Echo "<INPUT TYPE=\"HIDDEN\" NAME=\"verif\" VALUE=\"1\">" ;
 Echo "<TABLE BORDER=\"1\" BORDERCOLOR=\"#000000\" ALIGN=\"CENTER\" BGCOLOR=\"".$l ["couleur_fond"]."\" CELLPADDING=\"0\" CELLSPACING=\"0\" style=\"border-collapse:collapse\">" ;
 Echo "<TR><TD COLSPAN=\"2\" BGCOLOR=\"".$l ["lien"]."\" ALIGN=\"CENTER\">&nbsp;<B>V&eacute;rification&nbsp;et&nbsp;r&eacute;cup&eacute;ration&nbsp;des&nbsp;notes&nbsp;&agrave;&nbsp;partir&nbsp;d'une&nbsp;sauvegarde&nbsp;</B></TD></TR>" ;
 Echo "<TR><TD><TABLE BORDER=0 BORDERCOLOR=\"#000000\" ALIGN=\"CENTER\" BGCOLOR=\"".$l ["couleur_fond"]."\" CELLPADDING=\"1\" CELLSPACING=\"1\" WIDTH=\"100%\" style=\"border-collapse:collapse\">" ;
 Echo "<TR>" ;
 Echo "<TD ALIGN=\"RIGHT\">&nbsp;Fichier&nbsp;de&nbsp;sauvegarde&nbsp;des&nbsp;notes&nbsp;(<FONT COLOR=\"#FF0000\">.CSV</FONT>)&nbsp;:&nbsp;</TD>" ;
 Echo "<TD ALIGN=\"LEFT\"><INPUT TYPE=\"FILE\" NAME=\"fichier_notes\" SIZE=\"15\"></TD>" ;
 Echo "</TR>" ;
 Echo "<TR>" ;
 Echo "<TD ALIGN=\"RIGHT\">&nbsp;Classe&nbsp;:&nbsp;</TD>" ;
 Echo "<TD ALIGN=\"LEFT\"><select name=\"id_classe\">" ;
 $classes = SQL_commande ("SELECT * FROM classes WHERE millesime='".millesime (0)."' ORDER BY nom_bref,nom", $id_sql) ;
 $nc = SQL_nbr_lignes ($classes) ;
 For ($i = 0 ; $i < $nc ; $i++)
  {
   $cl = SQL_tableau_associatif ($classes, "") ;
   Echo "<option value=\"".$cl ["id_classe"]."\">".$cl ["nom"]." (".$cl ["nom_bref"].")</option>" ;
  }
 Echo "</select></TD>" ;
 Echo "</TR>" ;
 Echo "<TR>" ;
 Echo "<TD ALIGN=\"RIGHT\">&nbsp;S&eacute;parateur&nbsp;CSV&nbsp;:&nbsp;</TD>" ;
 Echo "<TD ALIGN=\"LEFT\"><INPUT TYPE=\"TEXT\" NAME=\"separateur\" VALUE=\"".SubStr ($separateur, 0, 1)."\" SIZE=\"2\" MAXLENGTH=\"1\"></TD>" ;
 Echo "</TR>" ;
 Echo "<TR><TD ALIGN=\"CENTER\" COLSPAN=\"2\"><INPUT TYPE=\"IMAGE\" SRC=\"../images/valider.png\" BORDER=\"0\"></TD></TR>" ;
 Echo "</TABLE></TD></TR></TABLE></FORM>" ;
 
 // Recuperation des eleves heberges (si module absences present)
 If (module_actif (2, $id_admin, $droit_admin) == 1)
  {
   Echo "<BR>" ;
   Echo "<FORM ACTION=\"./restauration.php\" METHOD=\"POST\" NAME=\"forme3\" ENCTYPE=\"multipart/form-data\" onSubmit=\"return verif2()\">" ;
   Echo "<INPUT TYPE=\"HIDDEN\" NAME=\"verif\" VALUE=\"2\">" ;
   Echo "<TABLE BORDER=\"1\" BORDERCOLOR=\"#000000\" ALIGN=\"CENTER\" BGCOLOR=\"".$l ["couleur_fond"]."\" CELLPADDING=\"0\" CELLSPACING=\"0\" style=\"border-collapse:collapse\">" ;
   Echo "<TR><TD COLSPAN=\"2\" BGCOLOR=\"".$l ["lien"]."\" ALIGN=\"CENTER\">&nbsp;<B>R&eacute;cup&eacute;ration&nbsp;des&nbsp;&eacute;l&egrave;ves&nbsp;h&eacute;berg&eacute;s&nbsp;&agrave;&nbsp;partir&nbsp;d'une&nbsp;sauvegarde&nbsp;</B></TD></TR>" ;
   Echo "<TR><TD><TABLE BORDER=0 BORDERCOLOR=\"#000000\" ALIGN=\"CENTER\" BGCOLOR=\"".$l ["couleur_fond"]."\" CELLPADDING=\"1\" CELLSPACING=\"1\" WIDTH=\"100%\" style=\"border-collapse:collapse\">" ;
   Echo "<TR>" ;
   Echo "<TD ALIGN=\"RIGHT\">&nbsp;Fichier&nbsp;de&nbsp;sauvegarde&nbsp;des&nbsp;notes&nbsp;(<FONT COLOR=\"#FF0000\">.CSV</FONT>)&nbsp;:&nbsp;</TD>" ;
   Echo "<TD ALIGN=\"LEFT\"><INPUT TYPE=\"FILE\" NAME=\"fichier_notes\" SIZE=\"15\"></TD>" ;
   Echo "</TR>" ;
   Echo "<TR>" ;
   Echo "<TD ALIGN=\"RIGHT\">&nbsp;S&eacute;parateur&nbsp;CSV&nbsp;:&nbsp;</TD>" ;
   Echo "<TD ALIGN=\"LEFT\"><INPUT TYPE=\"TEXT\" NAME=\"separateur\" VALUE=\"".SubStr ($separateur, 0, 1)."\" SIZE=\"2\" MAXLENGTH=\"1\"></TD>" ;
   Echo "</TR>" ;
   Echo "<TR><TD ALIGN=\"CENTER\" COLSPAN=\"2\"><INPUT TYPE=\"IMAGE\" SRC=\"../images/valider.png\" BORDER=\"0\"></TD></TR>" ;
   Echo "</TABLE></TD></TR></TABLE></FORM>" ;
  }
 Echo "</TD>" ;
 
 Echo "<TD>&nbsp;</TD>" ;
 Echo "<TD vALIGN=\"TOP\">" ;
 Echo "<TABLE BORDER=\"1\" BORDERCOLOR=\"#000000\" ALIGN=\"CENTER\" BGCOLOR=\"".$l ["couleur_fond"]."\" CELLPADDING=\"0\" CELLSPACING=\"0\" style=\"border-collapse:collapse\">" ;
 Echo "<TR><TD BGCOLOR=\"".$l ["lien"]."\" ALIGN=\"CENTER\">&nbsp;<B>Restauration&nbsp;&agrave;&nbsp;partir&nbsp;des&nbsp;sauvegardes</B>&nbsp;</TD></TR>" ;
 Echo "<TR><TD>" ;
 Echo "<TABLE BORDER=\"0\" BORDERCOLOR=\"#000000\" ALIGN=\"CENTER\" BGCOLOR=\"".$l ["couleur_fond"]."\" CELLPADDING=1 CELLSPACING=1 WIDTH=\"100%\" style=\"border-collapse:collapse\">" ;
 Echo "<TR BGCOLOR=\"".$l ["lien"]."\">" ;
 Echo "<TD ALIGN=\"CENTER\"><B>n&#186;</B></TD>" ;
 Echo "<TD ALIGN=\"CENTER\">&nbsp;<B>Date</B>&nbsp;</TD>" ;
 Echo "<TD ALIGN=\"CENTER\">&nbsp;<B>Heure</B>&nbsp;</TD>" ;
 Echo "<TD ALIGN=\"CENTER\">&nbsp;<B>Tables</B>&nbsp;</TD>" ;
 Echo "<TD ALIGN=\"CENTER\">&nbsp;<B>Taille</B>&nbsp;</TD>" ;
 Echo "<TD ALIGN=\"CENTER\">&nbsp;</TD>" ;
 Echo "</TR>" ;
 $r = SQL_commande ("SELECT * FROM sauvegardes WHERE type!='Import' ORDER BY date DESC", $id_sql) ;
 If (SQL_nbr_lignes ($r) > 0)
  {
   $c = 1 ;
   $total = 0 ;
   For ($i = 0 ; $i < SQL_nbr_lignes ($r) ; $i++)
    {
     $u = SQL_tableau_associatif ($r, "") ;
     If ($u ["taille"] > 0)
      {
       $c++ ;
       Echo "<TR" ;
       If ($c%2) { Echo " BGCOLOR=\"".$l ["nom"]."\"" ; }
       Echo ">" ;
       Echo "<TD ALIGN=RIGHT>&nbsp;".(SQL_nbr_lignes ($r)-$i)."&nbsp;</TD>" ;
       $u1 = Explode (" ", $u ["date"]) ;
       $u2 = Explode ("-", $u1 [0]) ;
       $u3 = Explode (":", $u1 [1]) ;
       Echo "<TD ALIGN=\"CENTER\">&nbsp;".$u2 [2]."/".$u2 [1]."/".$u2 [0]."&nbsp;</TD>" ;
       Echo "<TD ALIGN=\"CENTER\">&nbsp;".$u3 [0].":".$u3 [1].":".$u3 [2]."&nbsp;</TD>" ;
       Echo "<TD ALIGN=\"CENTER\">&nbsp;".$u ["type"]."&nbsp;</TD>" ; ;
       Echo "<TD ALIGN=\"CENTER\">&nbsp;".$u ["taille"]."&nbsp;</TD>" ;
       Echo "<FORM ACTION=\"./restauration.php\" METHOD=\"POST\">" ;
       Echo "<INPUT TYPE=\"HIDDEN\" NAME=\"id_restaure\" VALUE=\"".$u ["id_sauvegarde"]."\">" ;
       Echo "<INPUT TYPE=\"HIDDEN\" NAME=\"table\" VALUE=\"".$u ["type"]."\">" ;
       Echo "<INPUT TYPE=\"HIDDEN\" NAME=\"separateur\" VALUE=\"".SubStr ($u ["separateur"], 0, 1)."\">" ;
       Echo "<TD ALIGN=\"CENTER\">&nbsp;<INPUT TYPE=\"IMAGE\" SRC=\"../images/ajouter.png\" BORDER=\"0\">&nbsp;</TD>" ;
       Echo "</FORM>" ;
       Echo "</TR>" ;
       $total += $u ["taille"] ;
      }
    }
   Echo "<TR BGCOLOR=\"".$l ["lien"]."\">" ;
   Echo "<TD ALIGN=\"RIGHT\" COLSPAN=\"5\">&nbsp;Taille&nbsp;totale&nbsp;des&nbsp;sauvegardes&nbsp;:&nbsp;".$total."&nbsp;</TD>" ;
   Echo "<TD>&nbsp;</TD></TR></TABLE></TD></TR>" ;
  }
 Else
  {
   Echo "</TABLE></TD></TR>" ;
   Echo "<TR><TD ALIGN=\"CENTER\">&nbsp;<FONT COLOR=\"#FF0000\"><BLINK>Aucune&nbsp;sauvegarde</BLINK></FONT>&nbsp;&nbsp;</TD></TR>" ;
  }
 Echo "</TABLE></td>" ;
 Echo "<TD>&nbsp;</TD>" ;
 Echo "<TD vALIGN=\"TOP\">" ;
 Echo "<TABLE BORDER=\"1\" BORDERCOLOR=\"#000000\" ALIGN=\"CENTER\" BGCOLOR=\"".$l ["couleur_fond"]."\" CELLPADDING=\"0\" CELLSPACING=\"0\" style=\"border-collapse:collapse\">" ;
 Echo "<TR><TD BGCOLOR=\"".$l ["lien"]."\" ALIGN=CENTER>&nbsp;<B>Restauration&nbsp;&agrave;&nbsp;partir&nbsp;de&nbsp;sauvegardes&nbsp;ins&eacute;r&eacute;es&nbsp;sur&nbsp;le&nbsp;serveur</B>&nbsp;<br>" ;
 Echo "&nbsp;Ne&nbsp;fonctionne&nbsp;que&nbsp;si&nbsp;le&nbsp;s&eacute;parateur&nbsp;de&nbsp;champs&nbsp;est&nbsp;le&nbsp;point&nbsp;virgule&nbsp;->&nbsp;';'&nbsp;<br>" ;
 Echo "&nbsp;la&nbsp;base&nbsp;ne&nbsp;doit&nbsp;pas&nbsp;&ecirc;tre&nbsp;compress&eacute;e&nbsp;(Fichiers&nbsp;CSV&nbsp;ou&nbsp;SQL)&nbsp;</TD></TR>" ;
 Echo "<TR><TD>" ;
 Echo "<TABLE BORDER=\"0\" BORDERCOLOR=\"#000000\" ALIGN=\"CENTER\" BGCOLOR=\"".$l ["couleur_fond"]."\" CELLPADDING=\"1\" CELLSPACING=\"1\" WIDTH=\"100%\" style=\"border-collapse:collapse\">" ;
 Echo "<TR BGCOLOR=\"".$l ["lien"]."\">" ;
 Echo "<TD ALIGN=\"CENTER\"><B>n&#186;</B></TD>" ;
 Echo "<TD ALIGN=\"CENTER\">&nbsp;<B>R&eacute;pertoire</B>&nbsp;</TD>" ;
 Echo "<TD ALIGN=\"CENTER\">&nbsp;<B>Date</B>&nbsp;</TD>" ;
 Echo "<TD ALIGN=\"CENTER\">&nbsp;<B>Taille</B>&nbsp;</TD>" ;
 Echo "<TD ALIGN=\"CENTER\">&nbsp;</TD>" ;
 Echo "</TR>" ;
 $r = SQL_commande ("DELETE FROM sauvegardes WHERE type='Import'", $id_sql) ;
 $rep = OpenDir ($repertoire_sauvegarde) ;
 While ($file = ReadDir ($rep))
  {
   If (Is_Dir ($repertoire_sauvegarde.$separateur_repertoire.$file) And ($file != "..") And ($file != ".") And ($file != ""))
    {
     $r = SQL_commande ("SELECT * FROM sauvegardes WHERE nom_repertoire='".$file."' LIMIT 1", $id_sql) ;
     If (SQL_nbr_lignes ($r) == 0)
      {
       $ok = SQL_commande ("INSERT INTO sauvegardes (nom_repertoire,nom_fichier,date,type,taille,compresse,transmis,separateur)
                            VALUES ('".$file."','','".Date ("Y-m-d H:i:s")."','Import','','0','0','^;^')", $id_sql) ;
       $r = SQL_commande ("SELECT id_sauvegarde FROM sauvegardes WHERE nom_repertoire='".$file."' LIMIT 1", $id_sql) ;
       If (SQL_nbr_lignes ($r) == 1)
        {
         $n = SQL_ligne_suivante ($r) ;
         $taille = 0 ;
         $fiches = OpenDir ($repertoire_sauvegarde.$separateur_repertoire.$file) ;
         While ($f = ReadDir ($fiches))
          {
           If (!Is_Dir ($f) And ($f != "..") And ($f != ".") And ($f != ""))
            {
             $nom_fichier = SubStr ($f, 0, StrPos ($f, ".")) ;
             $ext_fichier = SubStr ($f, StrPos ($f, ".")+1, StrLen ($f)-StrPos ($f, ".")) ;
	     If ((StrToLower ($ext_fichier) == "csv") Or (StrToLower ($ext_fichier) == "sql"))
	      {
               $ok = SQL_commande ("INSERT INTO sauvegardes_fichiers (numero,nom,extension,taille)
                                    VALUES ('".$n [0]."','".$nom_fichier."','".$ext_fichier."','".FileSize ($repertoire_sauvegarde.$separateur_repertoire.$file.$separateur_repertoire.$f)."')", $id_sql) ;
               $taille += FileSize ($repertoire_sauvegarde.$separateur_repertoire.$file.$separateur_repertoire.$f) ;
	      }
            }
          }
         CloseDir ($fiches) ;
	 If ($taille > 0) { $ok = SQL_commande ("UPDATE sauvegardes SET taille='".$taille."' WHERE id_sauvegarde='".$n [0]."' LIMIT 1", $id_sql) ; }
	 Else { $ok = SQL_commande ("DELETE FROM sauvegardes WHERE id_sauvegarde='".$n [0]."' LIMIT 1", $id_sql) ; }
        }
      }
    }
  }
 CloseDir ($rep) ;
 $r = SQL_commande ("SELECT * FROM sauvegardes WHERE type='Import' ORDER BY date DESC", $id_sql) ;
 If (SQL_nbr_lignes ($r) > 0)
  {
   $c = 1 ;
   $total = 0 ;
   For ($i = 0 ; $i < SQL_nbr_lignes ($r) ; $i++)
    {
     $u = SQL_tableau_associatif ($r, "") ;
     If ($u ["taille"] > 0)
      {
       $c++ ;
       Echo "<tr" ; If ($c%2) { Echo " bgcolor=\"".$l ["nom"]."\"" ; }
       Echo "><td align=\"right\">&nbsp;".(SQL_nbr_lignes ($r)-$i)."&nbsp;</td>" ;
       $u1 = Explode (" ", $u ["date"]) ;
       $u2 = Explode ("-", $u1 [0]) ;
       Echo "<td align=\"center\">&nbsp;".$u ["nom_repertoire"]."&nbsp;</td>" ; ;
       Echo "<td align=\"center\">&nbsp;".$u2 [2]."/".$u2 [1]."/".$u2 [0]."&nbsp;</td>" ;
       Echo "<td align=\"center\">&nbsp;".$u ["taille"]."&nbsp;</td>" ;
       Echo "<form action=\"./restauration.php\" method=\"post\">" ;
       Echo "<input type=\"hidden\" NAME=\"id_restaure\" value=\"".$u ["id_sauvegarde"]."\">" ;
       Echo "<input type=\"hidden\" NAME=\"table\" value=\"".$u ["type"]."\">" ;
       Echo "<input type=\"hidden\" NAME=\"separateur\" value=\"".SubStr ($u ["separateur"], 0, 1)."\">" ;
       Echo "<td align=\"center\">&nbsp;<input type=\"image\" src=\"../images/ajouter.png\" border=\"0\">&nbsp;</td>" ;
       Echo "</form>" ;
       Echo "</tr>" ;
       $total += $u ["taille"] ;
      }
    }
   Echo "<tr bgcolor=\"".$l ["lien"]."\">" ;
   Echo "<td align=\"right\" colspan=\"4\">&nbsp;Taille&nbsp;totale&nbsp;des&nbsp;sauvegardes&nbsp;:&nbsp;".$total."&nbsp;</td>" ;
   Echo "<td>&nbsp;</td>" ;
  }
 Else
  {
   Echo "</TABLE></TD></TR>" ;
   Echo "<TR><TD ALIGN=\"CENTER\">&nbsp;<FONT COLOR=\"#FF0000\"><BLINK>Aucune&nbsp;sauvegarde</BLINK></FONT>&nbsp;&nbsp;</TD></TR>" ;
  }
 Echo "</TABLE></td></TR></TABLE>" ;
 // Gestion des notes temporaires
 /*
 $ok = SQL_commande ("DROP TABLE notes_temp", $id_sql) ;
 $res = SQL_commande ("SHOW COLUMNS FROM notes", $id_sql) ;
 $nbr = SQL_nbr_lignes ($res) ;
 $requete = "CREATE TABLE notes_temp (" ;
 $requete_plus = "" ;
 For ($i = 0 ; $i < $nbr ; $i++)
  {
   $ligne = SQL_tableau_associatif ($res, "") ;
   If ($i > 0) { $requete .= "," ; }
   $requete .= "`".$ligne ["Field"]."` ".$ligne ["Type"]." " ;
   If ($ligne ["Null"] == "YES") { $requete .= "NULL " ; } Else { $requete .= "NOT NULL " ; }
   If ($ligne ["Key"] == "PRI") { $requete_plus .= ",PRIMARY KEY (`".$ligne ["Field"]."`)" ; }
   If ($ligne ["Default"] != "") { $requete .= "DEFAULT '".$ligne ["Default"]."' " ; } Else { $requete .= "DEFAULT '' " ; }
   If ($ligne ["Extra"]) { $requete .= $ligne ["Extra"]." " ; }
  }
 $requete .= $requete_plus.")" ;
 echo $requete."<br>" ;
 $ok = SQL_commande ($requete, $id_sql) ;
 $def_notes = definition_table ($base_choisie, "notes", $id_sql) ;
 $def_notes = Str_Replace ("CREATE TABLE `notes`", "CREATE TABLE notes_temp", $def_notes) ;
 echo $def_notes ;
 */
 Echo "</BODY></HTML>" ;
?>